//@author A0087191Y
package net.mysoc.w111j.service.filters;

import net.mysoc.w111j.model.Expense;

/**
 * An interface for filtering expenses.
 */
public interface ExpenseFilter {
    /**
     * Checks whether the passed {@code Expense} matches this filter.
     *
     * @param expense the {@code Expense} to be considered.
     * @return {@code true} if {@code expense} matches this filter, {@code} false otherwise.
     */
    boolean shouldSelect(Expense expense);

    /**
     * Gets a textual description of this filter which can be used for presentation purposes.
     *
     * @return a {@code String} describing this filter.
     */
    String getDescription();
}
